package com.icarsaas.saas.tenant.system.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import com.icarsaas.saas.component.base.MyBaseRepository;
import com.icarsaas.saas.component.base.MyBaseRepositoryImpl;
import com.icarsaas.saas.tenant.system.model.Dept;
import com.icarsaas.saas.tenant.system.model.User;

public interface UserRepository extends UserRepositoryCustom, BaseRepository<User, Long>, JpaSpecificationExecutor<User> {

    /**
     * 根据用户名查询用户数据
     * @param username 用户名
     * @return 用户数据
     */
    public User findByUsername(String username);
    
    /**
     * 根据用户名和租户编号查询用户数据
     * @param username 用户名
     * @param tenant 租户编号
     * @return 用户数据
     */
    public User findByUsernameAndTenant(String username,String tenant);

    /**
     * 根据用户名查询用户数据,且排查指定ID的用户
     * @param username 用户名
     * @param id 排除的用户ID
     * @return 用户数据
     */
    public User findByUsernameAndIdNot(String username, Long id);

    /**
     * 查找多个相应部门的用户列表
     * @param dept 部门对象
     * @return 用户列表
     */
    public List<User> findByDept(Dept dept);

    /**
     * 删除多条数据
     * @param ids ID列表
     * @return 影响行数
     */
    public Integer deleteByIdIn(List<Long> ids);
}

/* 自定义接口
 */
interface UserRepositoryCustom extends MyBaseRepository<User, String> {

}
@Repository
class UserRepositoryImpl extends MyBaseRepositoryImpl<User, String> implements UserRepositoryCustom {
	
}
